package cn.wolfcode.wolf2w.service;

import cn.wolfcode.wolf2w.domain.Destination;
import cn.wolfcode.wolf2w.query.DestinationQueryObject;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 服务接口
 */
public interface IDestinationService {

    /**
     * 增加
     */
    void insert(Destination destination);

    /**
     * 删除
     */
    void delete(String id);

    /**
     * 修改
     */
    void update(Destination destination);

    /**
     * 查询
     */
    Destination selectOne(String id);

    /**
     * 查询全部
     */
    List<Destination> selectAll();

    /**
     * 通过区域id查询关联的目的地名称
     * @param rid
     * @return
     */
    List<Destination> getDestByRegionId(String rid);

    /**
     * 分页查询
     * @param q
     * @return
     */
    Page<Destination> query(DestinationQueryObject q);

    /**
     * 保存或编辑
     * @param destination
     */
    void saveOrUpdate(Destination destination);

    /**
     * 通过当前目的地的父亲的id去查询上一级的目的地
     * @param parentId
     * @return
     */
    List<Destination> queryToasts(String parentId);

    /**
     * 通过区域id查询当前区域下的目的地
     * @param regionId
     * @return
     */
    List<Destination> queryDestByRegionForApi(String regionId);

    /**
     *通过层面去查询对应的目的地
     * @param deep
     * @return
     */
    List<Destination> queryByDeep(int deep);

    /**
     * 通过目的地名称查询对应的目的地
     * @param keyword
     * @return
     */
    Destination queryByKeyword(String keyword);
}
